From 3e12a847c97437d3af53ef43742c7a41831d5dbc Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Mon, 31 Jul 2006 10:18:28 -0600 Subject: [PATCH] [IA64] boot windows server 2003:fix a bug about nat Because EML_UNAT may be cahnged by guest bank switch, it should be saved&restored at entry & exit path. Signed-off-by: Anthony Xu --- xen/arch/ia64/vmx/vmx_entry.S | 5 +++++ xen/arch/ia64/vmx/vmx_minstate.h | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/vmx/vmx_entry.S b/xen/arch/ia64/vmx/vmx_entry.S index 0893742345..53b00d9019 100644 --- a/xen/arch/ia64/vmx/vmx_entry.S +++ b/xen/arch/ia64/vmx/vmx_entry.S @@ -197,6 +197,11 @@ GLOBAL_ENTRY(ia64_leave_hypervisor) ;; mov ar.pfs=loc0 adds r20=PT(PR)+16,r12 + adds r8=PT(EML_UNAT)+16,r12 + ;; + ld8 r8=[r8] + ;; + mov ar.unat=r8 ;; lfetch [r20],PT(CR_IPSR)-PT(PR) adds r2 = PT(B6)+16,r12 diff --git a/xen/arch/ia64/vmx/vmx_minstate.h b/xen/arch/ia64/vmx/vmx_minstate.h index f7e676f66a..8ac2c73f92 100644 --- a/xen/arch/ia64/vmx/vmx_minstate.h +++ b/xen/arch/ia64/vmx/vmx_minstate.h @@ -269,7 +269,12 @@ ;; \ st8 [r24]=r9; /* ar.csd */ \ st8 [r25]=r10; /* ar.ssd */ \ - ;; + ;; \ + mov r18=ar.unat; \ + adds r19=PT(EML_UNAT)-PT(R4),r2; \ + ;; \ + st8 [r19]=r18; /* eml_unat */ \ + #define VMX_SAVE_EXTRA \ .mem.offset 0,0; st8.spill [r2]=r4,16; \ -- 2.30.2